package application;

import controleur.ConnexionBD;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class AuteurDAO
{
    /**
     * Transforme un ResultSet en liste d'AuteurBean
     * @param set
     * @return 
     */
    private static List<AuteurBean> getAuteurs(final ResultSet set)
    {
        List<AuteurBean> auteursBeanListe = new ArrayList<AuteurBean>();

        try {
            if (set != null) {
                while (set.next()) {
                    Auteur a = new Auteur();

                    a.setBiographie(set.getString("biographie"));
                    a.setDateDeces(set.getString("date_de_deces"));
                    a.setDateNaissance(set.getString("date_de_naissance"));
                    a.setIdAuteur(set.getString("id_auteur"));
                    a.setIdImage(set.getString("id_image"));
                    a.setIdVille(set.getString("id_lieu_de_naissance"));
                    a.setNomFamille(set.getString("nom_de_famille"));
                    a.setPrenom(set.getString("prenom"));

                    auteursBeanListe.add(a.getAuteurBean());
                }
            }
        } catch (Exception e) {
        }
        return auteursBeanListe;
    }

    /**
     * Retourne la liste des auteurs.
     * @return 
     */
    public static List<AuteurBean> getAuteurs()
    {
        final String query = "select * from auteur order by nom_de_famille";
        List<AuteurBean> abean;

        ConnexionBD con = new ConnexionBD();
        abean = AuteurDAO.getAuteurs(con.execute_query(query));
        con.close();

        return abean;
    }

    /**
     * Retourne la liste des auteurs ayant le idAuteur.
     * @param idAuteur
     * @return 
     */
    public static List<AuteurBean> getAuteur(final String idAuteur)
    {
        final String query = "select * from auteur where id_auteur=?";
        List<AuteurBean> abean;

        ConnexionBD con = new ConnexionBD();
        abean = AuteurDAO.getAuteurs(con.execute_query(query, idAuteur));
        con.close();

        return abean;
    }

    /**
     * Retourne la liste des auteurs d'un isbn.
     * @param isbn
     * @return 
     */
    public static List<AuteurBean> getAuteurLivre(final String isbn)
    {
        final String query = "select * from auteur a "
                + "join auteur_livre al on a.id_auteur = al.id_auteur "
                + "join livre l on al.isbn = l.isbn "
                + "where l.isbn = ?";
        List<AuteurBean> abean;

        ConnexionBD con = new ConnexionBD();
        abean = AuteurDAO.getAuteurs(con.execute_query(query, isbn));
        con.close();

        return abean;
    }
}
